Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【2人目確認中】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿の設定を追加 #2420

Open
wants to merge 34 commits into
base: develop
Choose a base branch
from

Conversation

mtdkei
Copy link
Contributor

@mtdkei mtdkei commented Jan 24, 2025

チケットへのリンク / 変更の理由(元のissueがあればリンクを貼り付ければOK)

#2288
#2366

どういう変更をしたか?

投稿リストと投稿リストスライダーで、クエリループブロックにあるような先頭固定表示の投稿を追加しました。
お一人の方にはコードのレビューもお願いできたらと思っております。

スクリーンショットまたは動画

変更前 Before

変更後 After

2025-01-24.17.39.15.mov

実装者の確認事項

実装者はレビュワーに回す前に以下の事を確認してチェックをつけてください。

  • 複数の意図の変更 ( 機能の不具合修正 + 別の機能追加など ) を含んでいないか?
  • Files changed (変更ファイル)の内容は目視で確認したか?
  • readme.txt に変更内容は書いたか?
  • readme.txt に記載の変更内容はエンドユーザーが見て変更の概要がわかるように書かれているか?
  • 本当にちゃんと確認をしたか?

プログラムの変更の場合

  • 書けそうなテストは書いたか?

変更内容について何を確認したか、どういう方法で確認をしたかなど

  1. 固定ページにて、投稿リストと投稿リストスライダーを追加し、表示条件の中に "Sticky Posts" という項目とセレクトボックスが表示されていることを確認。
  2. 1のセレクトボックスで項目を選んだ時に、以下のようになることを確認。
    • Include: 先頭固定表示の投稿を含めて表示(初期値)
    • Exclude: 先頭固定表示の投稿を除外して表示
    • Only: 先頭固定表示の投稿のみを表示
  3. 公開後、2の設定が反映されていることを確認。

Lighting、X-T9、TT5にて確認しました。また、分割読み込みのON、OFFを切り替えて確認しました。

レビュワーに回す前の確認事項

  • 実装者はこのテンプレートのチェック項目をちゃんと確認してチェックしたか?

レビュワー確認方法・確認内容など

実装者と同じ確認を行ってください。
また、可能でしたら目視でのコードの確認をお願いいたします。


レビュワー向け

レビュワーが確認して変更が反映されていない場合の確認事項

レビューしてみて意図した動作をしない場合は再度ビルドするなど以下の項目を確認してください。

  • プルしたか?
  • ビルドしたか?
  • ビルドしたディレクトリは正しいか(別の開発環境のディレクトリを見ていないか)?
  • npm install したか?
  • composer install したか?
  • キャッシュをクリアして確認したか?

@mtdkei mtdkei changed the title [ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿を追加 【確認待ち】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿を追加 Jan 24, 2025
@mtdkei mtdkei requested review from kurudrive and drill-lancer and removed request for kurudrive January 24, 2025 08:51
@mtdkei mtdkei changed the title 【確認待ち】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿を追加 【確認待ち】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿の設定を追加 Feb 5, 2025
@drill-lancer
Copy link
Member

@mtdkei
実装ありがとうございます。
問題ないことを確認しました。
承認します。


どなたか2人目確認お願いします。

@mthaichi mthaichi changed the title 【確認待ち】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿の設定を追加 【2人目確認中】[ 投稿リスト / 投稿リストスライダー ] 先頭固定表示の投稿の設定を追加 Feb 5, 2025
Copy link
Contributor

@mthaichi mthaichi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mtdkei ありがとうございます!
動きは問題ないと思いました。コードレビュー細かいことですが2点ご確認ください。

@@ -217,6 +217,31 @@ public static function get_loop_query( $attributes ) {
if ( ! empty( $date_query ) ) {
$args['date_query'] = $date_query;
}

$sticky_posts = isset( $attributes['stickyPosts'] ) ? $attributes['stickyPosts'] : 'include';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$sticky_posts という変数名が適切ではないと思います。
さらに234行目で$sticky_posts が再利用されているのもよろしくないので、別の変数名にしたいところです。

というか、221行目はわざわざ変数に入れず、223行目のswtich文で

switch ( $attributes['stickyPosts'] ?? 'include' ) {

と書けると思います。(たぶん)
そうすると再利用もなくなるすっきりします。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$sticky_posts というと固定記事がリストになっているものを思い浮かべますので、もし名前をつけるなら、$sticky_posts_mode とかそんな名前が良いと思います。

break;

case 'exclude':
$args['post__not_in'] = array_merge( $args['post__not_in'], get_option( 'sticky_posts' ) );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

次の行で $args['ignore_sticky_posts'] = true; してるので、この行(229行目)は冗長で不要ではないでしょうか。

@mtdkei mtdkei force-pushed the feature/post-list/sticky-posts branch from 84b9485 to 9a35f91 Compare February 6, 2025 00:48
@mtdkei
Copy link
Contributor Author

mtdkei commented Feb 6, 2025

@mthaichi
ありがとうございます!ご指摘の部分を修正してみました。

私の環境だけかもですが ?? にすると、プッシュの際に、PHP 5.6 だと動作しないというErrorが出たので、ご提案の$sticky_posts_modeという名前にしました。

また、だいぶ私が勘違いしていたのですが、ignore_sticky_posts のtrueとfalseは、先頭固定表示の投稿を無視して通常の並び順で表示をするかしないかっていうことに対してのものだったので、Excludeでは不必要でした。
そのため$args['ignore_sticky_posts'] = true;を削除してみました。

そのほかも多少調整してみましたのでよろしくお願いいたします。

@mthaichi
Copy link
Contributor

mthaichi commented Feb 6, 2025

@mtdkei

私の環境だけかもですが ?? にすると、プッシュの際に、PHP 5.6 だと動作しないというErrorが出たので、ご提案の$sticky_posts_modeという名前にしました。

PHP7から使える記述なので、PHP5.6では使えないですねー。
ただWordPress6.3から5.6は完全に外れていると記憶しているので、5.6をカバーしなくても良いと思いますが、$sticky_posts_mode という名前にしていただいたのでこの部分はOKです。

あと、もう一つ気になる点を確認させてください。
'only'の時に

	case 'only':
				$sticky_posts     = get_option( 'sticky_posts' );
				$args['post__in'] = ! empty( $sticky_posts ) ? $sticky_posts : array( 0 );
				if ( ! empty( $sticky_posts ) ) {
					$args['posts_per_page'] = count( $sticky_posts );
					$args['orderby']        = 'post__in';
				}
				break;

$args['orderby'] = 'post__in' になってますが、これはどういう意図ですか?
$attributes['orderby'] を反映したほうが良いような気もしますが。
onlyの時だけ順番に違和感を感じましたので、確認です。

@mtdkei
Copy link
Contributor Author

mtdkei commented Feb 7, 2025

@mthaichi
only の場合に orderby = 'post__in' を指定していましたが、これは完全にミスでした。
管理画面の「先頭固定表示」の順番がそのまま適用されるとは限らず、意図しない並び順になるケースが多いため、 orderby を適用するよう修正しました。お手数をおかけいたしまして申し訳ありません。

Copy link
Contributor

@mthaichi mthaichi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mtdkei 遅くなってすみません。問題ないと思いますので、このままマージします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants